home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / General Tools / Headers / ListSocket.h < prev    next >
Text File  |  1999-07-13  |  4KB  |  94 lines

  1. #ifndef _LISTSOCKET_
  2. #define _LISTSOCKET_
  3.  
  4.  
  5. class UtilStr;
  6. class XLongList;
  7. class Clipboard;
  8.  
  9. class ListSocket {
  10.     
  11.     public:
  12.         
  13.         //    Post:    Mirrors a GUI drag of the selected items dropped before cell <inAboveCell> at depth <inDepth>
  14.         //    Note:    If <inDepth> is invalid or <inAboveCell> < 0 or > N, the closest boundry is used.
  15.         virtual void                MoveSelected( long inAboveCell, long inDepth );
  16.         
  17.         //    Post:    Used by a GUI to refine a given insertion point.
  18.         //    Post:    <ioNodeNum> and <ioDepth> may be adjusted/corrected.
  19.         //    Note:    Depths are such that 0 means root level.
  20.         //    Note:    Fcn succesful iff <true> is returned.
  21.         virtual bool                CheckInsertPt( long& ioNodeNum, long& ioDepth );
  22.         
  23.         //    Post:    Used to select cells.  DeleteSelected() and MoveSelected() use cell selections.
  24.         virtual void                SetSelected( long inCellNum, bool isSelected ) = 0;
  25.         virtual long                NumSelected();
  26.         virtual bool                IsSelected( long inCellNum ) = 0;
  27.         virtual void                SetSelectAll( bool inAreSelected );
  28.         inline void                    UnselectAll()                                { SetSelectAll( false );    }
  29.         inline void                    SelectAll()                                    { SetSelectAll( true );        }
  30.         
  31.         //    Post:    Used to enable/disable cells.
  32.         virtual void                SetEnabled( long inCellNum, bool isSelected );
  33.         virtual bool                IsEnabled( long inCellNum );
  34.         virtual void                EnableAll();
  35.         
  36.         //    Post:    Returns the first/last cell that's selected.
  37.         //    Note:    0 is returned if no cell is selected
  38.         long                        GetFirstSelected();
  39.         long                        GetLastSelected();
  40.         
  41.         //    Post:    Permanently deletes the cells from the list.
  42.         virtual void                DeleteSelected();
  43.         
  44.         //    Post:    Retruns info about the cell <inCellNum>.
  45.         //    Note:    Returns true if <inCellNum> specifies a valid cell (and valid info is sent back).
  46.         //    Note:    Depths are such that 0 means root level, etc.
  47.         virtual bool                GetCell( long inCellNum, long& outIcnID, long& outDepth, UtilStr& outLabel ) = 0;
  48.         
  49.         //    Post:    Returns the number of cells in the list
  50.         virtual long                NumCells() = 0;
  51.         
  52.         //    Post:    Stub fcn for ListSocket.  Overridde if your table needs this functionality.
  53.         //    Note:    depth == 0 means root level.
  54.         virtual void                SetInsertionPt( long inCellNum, long inDepth );
  55.  
  56.         //    Post:    Universally manages a click on the <inCell>th cell, using the current insertion
  57.         //            point as the anchor if nessecary to select cells.
  58.         //    Note:    It returns a list of cell numbers that need refreshing (ie, their select state changed).
  59.         virtual XLongList*            ManageClick( long inCell, bool inShift, bool inCmd, bool inDeselectRest );
  60.         
  61.         //    Post:    Moves the selection location <inCellDelta> cells forward.  This fcn is useful for handling
  62.         //            arrow keys in a list for example.
  63.         //    Note:    If there is nothing selected, the first cell will be selected.
  64.         //    Note:    It returns a list of cell numbers that need refreshing (ie, their select state changed).    
  65.         XLongList*                    ArrowSelection( int inCellDelta );
  66.         
  67.         //    Post:    Returns the cell number associated with the user typing in <inGUINum>.  In otherwords, this
  68.         //            fcn maps the cell labeling to the cell number.
  69.         virtual long                GUINumToCellNum( long inGUINum );
  70.  
  71.         //    Used to see if a given clipboard opertion can be performed (ie, if the menu item can be enabled).
  72.         virtual bool                CanClear()                                                { return false;        }
  73.         virtual bool                CanCutToClip();
  74.         virtual bool                CanCopyToClip();
  75.         virtual bool                CanPasteFromClip( Clipboard& inClip );
  76.             
  77.         //    Performs the standard clipboard operations.
  78.         virtual void                Clear();
  79.         virtual void                CutToClip( Clipboard& outClip );
  80.         virtual void                CopyToClip( Clipboard& outClip );
  81.         virtual void                PasteFromClip( Clipboard& inClip );
  82.  
  83.  
  84.     protected:
  85.         long                        mInsertionPt;
  86.         long                        mInsertionDepth;
  87.         
  88.  
  89.  
  90. };
  91.  
  92.  
  93.  
  94. #endif